//
//  TipPanel.cpp
//  petgame
//
//  Created by zz on 2018/12/15.
//

#include "TipPanel.hpp"

//创建对象
TipPanel*TipPanel::create(int type,int value,Vec2 pos){
    
    auto tippanel=new TipPanel();
//    初始化
    if(tippanel&&tippanel->init(type,value,pos)){
        
//        自动释放
        tippanel->autorelease();
        return tippanel;
    }else{
//        安全释放
        CC_SAFE_DELETE(tippanel);
        return NULL;
    }
}
bool TipPanel::init(int type,int value,Vec2 pos){
    
//    初始化为一张背景图片资源文件
    this->initWithFile("infopanel.png");
    
    
//    判断提示的类型如睡眠，饥饿，开心值等
    switch(type){
        case 0:{
//            创建提示文本，并把数值转换为cstring类型
            auto str=__String::createWithFormat(" 开心值 + %i",value)->getCString();
            this->label=LabelTTF::create(str, "Arial", 50);
        }
            break;
        case 1:{
            //            创建提示文本，并把数值转换为cstring类型
              auto str=__String::createWithFormat( "饥饿值 - %i",value)->getCString();
            this->label=LabelTTF::create(str, "Arial", 50);
            
        }
            break;
        case 2:{
            //            创建提示文本，并把数值转换为cstring类型
              auto str=__String::createWithFormat("精神值 + %i",value)->getCString();
           this->label=LabelTTF::create(str, "Arial", 50);
            
        }
            break;
            
        default:
            break;
    }
//设置提示文本的坐标
    this->label->setPosition(this->getContentSize()/2);
//    添加到渲染
    this->addChild(label);
//    设置该对象坐标
    this->setPosition(pos);
//    设置对象缩放，为了后面的动画做准备
    this->setScale(0);
//    创建缩放动画
    auto ac1=ScaleTo::create(0.4, 0.5);
//    创建延时
    auto del=DelayTime::create(0.4);
    auto de2=DelayTime::create(1.2);
    auto out=ScaleTo::create(0.4, 0);
//    创建序列动画，和回调函数
    auto cf=CallFunc::create(CC_CALLBACK_0(TipPanel::callfunc,this));
    auto seq=Sequence::create(del,EaseIn::create(ac1, 0.1),de2,EaseOut::create(out, 0.1),cf, NULL);
    this->runAction(seq);
    
    return true;
}


void TipPanel::callfunc(){
    
//    删除该对象，并在屏幕中移除
    this->removeFromParent();

    
}
